package test4;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

public class ShowDetailIframe extends JFrame {
    private Novel novel;//小说对象
    private Chapter chapter;//当前章节对象
    private ShowChaptersIframe showChaptersIframe;//上一个页面对象
    private JPanel detailPanel;//包含文字对象的容器
    JTextArea textArea;//显示文字的对象


    public ShowDetailIframe(Novel novel, Chapter chapter, ShowChaptersIframe showChaptersIframe) {
        this.novel = novel;//小说对象
        this.chapter = chapter;//当前章节对象
        this.showChaptersIframe = showChaptersIframe;//上一个页面对象
        init();
        initData();//去请求获取当前小说内容
        this.setVisible(true);//显示
    }


    /**
     * 获取小说所有的章节
     */
    private void initData() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    //2 先判断小说的文件是否存在
                    File file = new File(novel.getBookName() + "/" + chapter.getName() + ".txt");
                    String text;
                    if (file.exists()) {
                        //- 2.1 如果存在   直接读取文件内容 显示在页面上
                        text = NovelUtils.getDetailFromFile(file);
                    } else {
                        //- 2.2 如果不存在  去下载内容  显示在页面上   同时把内容保存到文件里
                        //获取详情信息
                        text = NovelUtils.process_chapter(novel.getBookName(), chapter);
                    }
                    //根据信息 刷新布局
                    freshDetailPanel(text);
                } catch (IOException ex) {
                    throw new RuntimeException(ex);
                }
            }
        }).start();
    }

    private void init() {
        this.setTitle("小说下载器");
        this.setSize(400, 600);
        this.setLocationRelativeTo(null);//居中
        this.setResizable(false);//禁止缩放
        this.setLayout(new FlowLayout());

        //显示所有章节的布局容器
        detailPanel = new JPanel();
        detailPanel.setPreferredSize(new Dimension(350, 500));
        detailPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 2));

        //多行的文本显示的控件 参1行数 参2列数
        textArea = new JTextArea(31, 32);
//        textArea.setPreferredSize(new Dimension(350, 1500));

        textArea.setBackground(new Color(204, 232, 207));
        textArea.setLineWrap(true);//激活自动换行功能
        textArea.setEnabled(false);
        textArea.setDisabledTextColor(Color.black);
//        textArea.setWrapStyleWord(true);// 激活断行不断字功能
        detailPanel.add(new JScrollPane(textArea));

        JPanel pagePanel = new JPanel();
        pagePanel.setPreferredSize(new Dimension(350, 100));
        pagePanel.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 5));
        JButton backBtn = new JButton("返回");
        backBtn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //回复上一个页面的显示
                showChaptersIframe.setVisible(true);
                //当前页面直接销毁
                ShowDetailIframe.this.dispose();

            }
        });
        pagePanel.add(backBtn);
        this.add(detailPanel);
        this.add(pagePanel);
    }


    /**
     * 刷新章节的布局
     */
    private void freshDetailPanel(String text) {
        //显示到控件里
        textArea.setText(text);
    }
}
